#ifndef Look_First
#define Look_First
#ifdef __GNUG__
#pragma interface
#endif

#include "Rectangle.h"
#include "Metric.h"
#include "Layout.h"

class Ink;

//---- Look --------------------------------------------------------------------

class Look {
public:
	Ink *backgroundColor;
	Ink *disableInk;

	Layout *popUpMenuLayout;
	Layout *pullDownMenuLayout;
	Layout *menuLineLayout;
	Layout *menuItemLayout;
	Layout *scrollButtonLayout;
	Layout *radioButtonLayout;
	Layout *toggleButtonLayout;
	Layout *scrollBarLayout;
	Layout *actionButtonLayout;
	Layout *defaultButtonLayout;
	Layout *popupButtonLayout;
	Layout *sliderLayout;
	Layout *thumbLayout;
	Layout *fieldBorderLayout;
	Layout *fieldLayout;
	Layout *windowBorderLayout;
	Layout *menuBarLayout;
	Layout *sashLayout;
	Layout *progressBarLayout;
	Layout *scaleLayout;
	Layout *scaleThumbLayout[2];
	Layout *groupLayout;
	Layout *frameLayout;

public:
	Look();
	virtual ~Look();

	Layout *MenuLineLayout()
		{ return menuLineLayout; }
	Layout *PopUpMenuLayout()
		{ return popUpMenuLayout; }
	Layout *PullDownMenuLayout()
		{ return pullDownMenuLayout; }
	Layout *MenuItemLayout()
		{ return menuItemLayout; }
	Layout *ScrollButtonLayout()
		{ return scrollButtonLayout; }
	Layout *RadioButtonLayout()
		{ return radioButtonLayout; }
	Layout *ToggleButtonLayout()
		{ return toggleButtonLayout; }
	Layout *ScrollBarLayout()
		{ return scrollBarLayout; }
	Layout *ActionButtonLayout()
		{ return actionButtonLayout; }
	Layout *DefaultButtonLayout()
		{ return defaultButtonLayout; }
	Layout *PopupButtonLayout()
		{ return popupButtonLayout; }
	Layout *SliderLayout()
		{ return sliderLayout; }
	Layout *ThumbLayout()
		{ return thumbLayout; }
	Layout *FieldBorderLayout(bool noborder)
		{ return noborder ? fieldLayout : fieldBorderLayout; }
	Layout *MenuBarLayout()
		{ return menuBarLayout; }
	Layout *SashLayout()
		{ return sashLayout; }
	Layout *ProgressBarLayout()
		{ return progressBarLayout; }
	Layout *ScaleLayout()
		{ return scaleLayout; }
	Layout *ScaleThumbLayout(Direction dir)
		{ return scaleThumbLayout[dir]; }
	Layout *GroupLayout()
		{ return groupLayout; }
	Layout *FrameLayout()
		{ return frameLayout; }
		
	virtual void DrawHighlight(Rectangle &r);

	Ink *GetBackgroundColor()
		{ return backgroundColor; }
	Ink *DisableInk()
		{ return disableInk; }
};

extern void MakeLook(bool motif);
extern void ToggleLook();

extern Look *gLook;

#endif
